The present invention relates to data storage and data communications systems, and more particularly to rotating disk data storage devices. Even more particularly, the present invention relates to error correction systems used within the controllers of disk data storage devices and data communication systems.
Rotating disk data storage devices are typically organized in a series of concentric tracks, with the read/write head of such devices being movable between tracks. Within each track, data is stored in sectors, with each sector typically holding a consistent number of bytes of data. Since the advent of digital computing techniques, attention has focused on methods for reducing and correcting errors within the data of sectors. Such errors may be attributable to transient conditions in a computing apparatus or transmission channel, called "soft" errors; or they may be recurrent errors, such as those resulting from defects in data storage media, etc., called "hard" errors. Both of these types of errors can be corrected, depending on their location within a sector, and their length.
When data is being read from a disk drive, error correction circuits analyze the data to determine if an error has occurred, and to determine where the error has occurred within a sector. Since a sector contains three types of information, a pre-data field, data field, and redundancy field, the error correction circuits can detect incorrect errors in any of these three fields. A controller circuit can be made more efficient if only the data within a sector is stored, and the pre-data and redundancy information is discarded. However, if the pre-data and redundancy information has been discarded, the error correction circuits need some way of distinguishing between errors that have occurred within the data of the sector and errors that have occurred within either the pre-data or the redundancy fields. This is particularly important where the error correction is dynamic, where data in a sector is being corrected prior to the data being transferred back to a processor. Another problem that occurs with dynamic correction of data is caused by the speed at which data is transferred from the disk. Because of the speed of transfer, correction of one sector must be overlapped with receiving data for a subsequent sector from the disk. Therefore, the error correction code circuits must not only determine where an error has occurred in a sector and correct the error, the circuits must also perform this function while accumulating redundancy information for the next sector being transferred.
There is need in the art then for an error correction code circuit that separates errors that occur in the data field of a sector from errors that occur in either the pre-data field or the redundancy field of a sector. There is also a need in the art for such an error correction code circuit that performs this separation dynamically on one sector while a subsequent sector is being read from the disk and transferred to the controller. There is a further need for providing this error correction that allows sectors to be read which were written with different lengths of pre-data, different lengths of sector data, and different lengths of sector redundancy information.